The software controlling a cached disk array system is often unaware of how much work is being done. It is static in determining how much of the system's resources to devote to completing that work. Data is moved between the disk arrays and the cache memory based upon fixed algorithms that do not consider the workload. Consequently, disk array systems do not always use the available cache memory, back-end disk bandwidth, or disk controller processor cycle (throughput) resources to the fullest extent possible.
Static algorithms allocate system resources broadly to allow for many threads of work to operate simultaneously. Each thread being executed is given part of the cache memory with which to work. When a thread issues a request to access data, if that data is currently buffered in the cache memory (a cache hit) it is quickly provided and the thread continues with its work. If the data is not available in the cache memory (a cache miss) then a disk controller must take the request and retrieve the data from a disk drive. Accessing a disk drive consumes controller throughput and the back-end bandwidth of the disk drive array. It also takes considerably more time than accessing the same data from the cache memory.
Under light workload conditions the performance of the disk array system, as seen by the threads requesting access to the data, is governed mainly by the percentage of cache hits and cache misses. A thread that experiences a cache miss is delayed for a limited time as there is little competition for drive controller throughput or disk array bandwidth needed to access the data from the disk array. Competition for the throughput and bandwidth increases as the workload increases. Under heavy workloads, the average access time becomes limited by either the drive controller's ability to service cache misses or the disk array's bandwidth.
Disk array system performance can be improved under all workload conditions by increasing the size of the cache memory, increasing the drive controller throughput, adding more drive controllers, and increasing the back-end bandwidth of the disk array itself. Each of these improvements requires faster hardware which translates to increased cost and power consumption.
Changes to the controlling software cannot increase the speed or capacity of the hardware resources, but it can improve performance by using those resources more efficiently. The best way to improve a caching disk system's performance is to improve its cache utilization. A cache hit is a significant performance improvement over a cache miss. By adjusting the algorithms, underutilized resources can be reallocated to allow more data tracks to be prestaged from the disk array into the cache memory. More data in the cache memory increases the probability of cache hits, and thus improves the overall performance.